<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
class Caches
{
    /***
     * 将数据库查询内容生成数据缓存文件
     */
    static function toDataFile($filename,$data)
    {
        $filename = $filename.'.php';
        
        global $root;
        
        $parent_dir = dirname($root.$filename);
        
        if(file_exists($parent_dir))
        {
            @chmod($parent_dir,0777);
        }
        else
        {
            self::mkdirs($parent_dir,0777);
        }   

        file_put_contents($root.$filename,'<?php'."\n".'return array(\''.json_encode($data).'\');');
    }

    /***
     * 读取数据库数据缓存文件
     */
    static function loadDataFile($filename)
    {
        $filename = $filename.'.php';
        
        global $root;
        
        if(!file_exists($root.$filename) || file_get_contents($root.$filename) == '')
        {
            return false;
        }
        else
        {
            $data = require $root.$filename;
            $data = json_decode($data[0],true);
            return $data;
        }
    }
    
    /***
     * 生成静态文件[动态地址,生成静态文件名,是否为外部网站]
     */
    static function toStatic($url,$filename)
    {
        global $root;
		
		$data = file_get_contents($url);
		$parent_dir = dirname($root.$filename);

        if(file_exists($parent_dir))
        {
            @chmod($parent_dir,0777);
        }
        else
        {
            self::mkdirs($parent_dir,0777);
        }   
        
		file_put_contents($root.$filename, $data);

		if( !is_writable($root.$filename) )
        {
			echo 'error'.$root.$filename;
            return false;
		}
    }
    
    //无限级目录
    static function mkdirs($path,$mode=0777)
    {
		if(!is_dir($path))
		{
			if(!self::mkdirs(dirname($path)))
			{
				return false;
			}
			
			if(!mkdir($path,0777))
			{
				return false;
			}
		}
		return true;
    }

	/*预留删除方法
<p>function rmdirs($dir)<br>
{<br>
$d = dir($dir);<br>
while (false !== ($child = $d-&gt;read())){<br>
if($child != '.' &amp;&amp; $child != '..'){<br>
if(is_dir($dir.'/'.$child))<br>
rmdirs($dir.'/'.$child);<br>
else unlink($dir.'/'.$child);<br>
}<br>
}<br>
$d-&gt;close();<br>
rmdir($dir);<br>
}</p>
	*/
}
